<script>
    //indexOf 寻找数组中某个元素的索引 如果能够找到就返回索引值 如果找不到那么就返回-1
    //array.indexOf(要搜索的元素,从第几个开始(index值))
    var arr = ['橘子', '香蕉', '黄瓜', '胡萝卜'];
    //需求:查找一下数组中是否有黄瓜这一项
    var res = arr.indexOf('黄瓜')
    // console.log(res);//2
    var res2= arr.indexOf('胡萝卜')
//    console.log( res2);

    // ------------------------华丽的分割线--------------------------

    //forEach 用于遍历数组
    //forEach map filter find...这种函数我们称之为高阶函数
    //高阶函数:自身是一个函数,可以将函数作为参数传入,或者将函数作为返回值输出

    //语法: arr.forEach(function(每个元素,索引,数组本身){})
    //其实没有for循环灵活,它不能使用break continue等关键字来控制循环的停止和执行
    // arr.forEach(function (item, index, array) {
        // console.log('item====' + item);
    //     console.log('index====' + index);
        // console.log('array====' + array);
    // })

    //封装一个forEach1高阶函数,forEach的原理(拓展)

    function forEach1(fn) { 
        console.log(this);
        var arr = this; //this就是调用当前函数的数组

        for (var i = 0; i < arr.length; i++) {
            fn(arr[i], i, arr) //每循环一次 调用一次fn
        }
    }

    // //将这个方法添加到数组的原型(削微超纲)
    Array.prototype.forEach1 = forEach1

    arr.forEach1(function (item, index, array) {
        // console.log(array);
    })

    // ------------------------华丽的分割线--------------------------

    //find 用于通过某个条件去查找数组中的某个元素,如果条件符合,就会返回满足条件的元素

    //语法:arr.find(function(每个元素,索引,数组本身){})

    //以后会通过数据的id来作为条件,用于查找数组中的某个元素

    // var res = arr.find(function (item, index, array) {
    //     // console.log(item);
    //     return index === 2 //查找索引等于2的元素
    // })

    // console.log(res);//黄瓜
</script>